using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate;
using NHibernate.Criterion;
using Didsoft.DataAccess.Hibernate;
using Didsoft.DataAccess.Contracts;
using SIOGDE.AccesoDatos.Entidades;
using SIOGDE.AccesoDatos.Contratos;

namespace SIOGDE.AccesoDatos.Contexto
{
   public class PersonaArmaAccesoDatos : DataAccessBasic<PersonaArma>, IPersonaArmaAccesoDatos
   {
     public PersonaArmaAccesoDatos()
     {
     }
     
     /// <summary>
     /// Devuelve una lista IList<PersonaArma> con todas las ocurrencias encontradas, en base a filtro.
     /// </summary>
     /// <param name="filtro"></param>
     /// <returns></returns>
     public IList<PersonaArma> BuscarPorFiltro(string filtro)
     {
             ICriteria criteria = Session.CreateCriteria(typeof(PersonaArma));
             criteria.Add(Expression.Like("Descripcion", filtro+"%")); 
             return criteria.List<PersonaArma>();
     }


     public PersonaArma GetPorPersonaId(int personaId)
     {
         var query = from pa in Session.QueryOver<PersonaArma>()
                     where pa.Persona.Id == personaId
                     select pa;
         return query.List<PersonaArma>().FirstOrDefault();
     }


     public IList<PersonaArma> GetPorPersonaGuid(string guid)
     {
         var hql ="from PersonaArma pa where pa.Persona.Guid = :guid";

         var query = Session.CreateQuery(hql);
         query.SetAnsiString("guid", guid);

         return query.List<PersonaArma>();
     }
   }
}

